# -*- coding: utf-8 -*-
"""
@Time ： 2023/3/30 21:32
@Auth ： Mr. William 1052949192
@Company ：特斯汀学院 @testingedu.com.cn
@Function ：电商登录自动化实战
"""
import time

from selenium import webdriver

# 打开浏览器
driver = webdriver.Chrome()
# 隐式等待
"""
为解决元素加载与元素查找的时间差（比如跳转，弹窗等）
selenium每隔1s去找一次元素，配10s，就是最多找10次
其中任何一次找到了，就继续往下跑
如果10次之后都没找到，就报NoSuchElementException
"""
driver.implicitly_wait(3)

# 自动化用例一般是有顺序要求的
# 比如先测登录失败，后测登录成功

# 自动化用例都要求有完整初始化或者结束操作
# 每一个用例初始化和结束可能不一样

# 打开网站
driver.get('http://39.108.55.18:8000/Home/user/login.html')
# 用户名密码错误
driver.find_element('id', 'username').send_keys('13800138006')
driver.find_element('name', 'password').send_keys('1234561')
driver.find_element('xpath', '//*[@id="verify_code"]').send_keys('111')
# 这叫绝对路径，一定不推荐使用
t = driver.find_element('xpath','/html/body/div[2]/div/div[2]/div/div[1]/span').text
print(t)
driver.find_element('xpath', '//a[@class="J-login-submit"]').click()

# 获取提示
nick = driver.find_element('xpath','//*[@id="layui-layer1"]/div[2]').text
print(nick)


def login(u,p):
    global driver
    # 打开网站
    driver.get('http://39.108.55.18:8000/Home/user/login.html')
    # 登录
    driver.find_element('id', 'username').send_keys(u)
    driver.find_element('name', 'password').send_keys(p)
    driver.find_element('xpath', '//*[@id="verify_code"]').send_keys('111')
    # 这叫绝对路径，一定不推荐使用
    t = driver.find_element('xpath','/html/body/div[2]/div/div[2]/div/div[1]/span').text
    print(t)
    driver.find_element('xpath', '//a[@class="J-login-submit"]').click()

    # 获取昵称
    nick = driver.find_element('xpath','//a[@class="red userinfo"]').text
    print(nick)

    # 退出登录


# 参数化为什么在自动化里面很鸡肋呢？
# 看似一模一样的用例，事实上会有细节差别
# 比如登录，登录失败是看提示，登录成功是看昵称
login('13800138006','123456')

time.sleep(3)